It is difficult for most people to create cross-platform mobile applications. Mobile communications devices operate on different platforms such as the Apple iPhone OS, Window Mobile, Symbian, Palm, S60 and Google Android. Each platform has its own programming language and requirements.
Traditionally, creating a native application on a specific platform requires learning and writing a computer language specific to that platform. Consequently, cross platform applications requires re-writing the application for each platform and programmers with expertise in multiple programming languages. This is time-consuming and expensive. Also, as new platforms emerge, authors of applications must familiarize themselves with the programming language of the new platform in addition to their knowledge of existing platforms.
Technologies such as Java™ create a platform independent virtual machine to assist with the deployment of applications to multiple platforms. However, the user interface (UI) generated by Java applications are distinctively different from the native UI of the original platform. Firstly, the Java UI is not aesthetically pleasing. Secondly, the Java UI is slower than the native UI because the Java virtual machine acts as an additional layer between the Java program and the underlying native API/operating system.